Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • View renderedDownload


lang/README.it.md v4.5.0-rc.4 (17844e91) Text, 16.69 KB

Tc9d1d9# Reticulum MeshChatX

[Tff7b72English](Te6edf3../README.md) | [Tff7b72Deutsch](Te6edf3README.de.md) | [Tff7b72Русский](Te6edf3README.ru.md) | [Tff7b72中文](Te6edf3README.zh.md) | [Tff7b72日本語](Te6edf3README.ja.md)

Un fork ampiamente modificato e ricco di funzionalita di Reticulum MeshChat di Liam Cottle.

Questo progetto e indipendente dal progetto originale Reticulum MeshChat e non e affiliato ad esso.

Tff7b72- Sito web: [Tff7b72meshchatx.com](Te6edf3https://meshchatx.com)
Tff7b72- Codice sorgente: [Tff7b72git.quad4.io/RNS-Things/MeshChatX](Te6edf3https://git.quad4.io/RNS-Things/MeshChatX)
Tff7b72- Mirror ufficiale: [Tff7b72github.com/Quad4/MeshChatX](Te6edf3https://github.com/Quad4/MeshChatX) — usato anche per le build Windows e macOS al momento.
Tff7b72- Release: [Tff7b72git.quad4.io/RNS-Things/MeshChatX/releases](Te6edf3https://git.quad4.io/RNS-Things/MeshChatX/releases)
Tff7b72- Changelog: [Ta5d6ff`CHANGELOG.md`](../CHANGELOG.md)
Tff7b72- TODO: [Tff7b72Boards](Te6edf3https://git.quad4.io/RNS-Things/MeshChatX/projects)

Tc9d1d9## Modifiche importanti rispetto a Reticulum MeshChat

Tff7b72- Usa LXST
Tff7b72- Peewee ORM sostituito con SQL diretto
Tff7b72- Axios sostituito con Ta5d6ff`fetch` nativo
Tff7b72- Electron 41.x (runtime Node 24 incluso)
Tff7b72- Wheel Ta5d6ff`.whl` con web server e asset frontend integrati per piu opzioni di deploy
Tff7b72- i18n
Tff7b72- PNPM e Poetry per le dipendenze

Tff7b72> [!WARNING]
Tff7b72> MeshChatX non garantisce la compatibilita dei dati con le versioni precedenti di Reticulum MeshChat. Eseguire un backup prima della migrazione o dei test.

Tff7b72> [!WARNING]
Tff7b72> I sistemi legacy non sono ancora completamente supportati. Requisiti minimi attuali: Python `>=3.11` e Node `>=24` (Electron 41 allinea a Node 24; `engines` in `package.json` e la CI seguono la stessa linea).

Tc9d1d9## Requisiti

Tff7b72- Python Ta5d6ff`>=3.11` (da Ta5d6ff`pyproject.toml`)
Tff7b72- Node.js Ta5d6ff`>=24` (da Ta5d6ff`package.json`, campo Ta5d6ff`engines`)
Tff7b72- pnpm Ta5d6ff`10.33.0` (da Ta5d6ff`package.json`, campo Ta5d6ff`packageManager`)
Tff7b72- Poetry (utilizzato in Ta5d6ff`Taskfile.yml` e nei workflow CI)

Ta5d6ff```Ta5d6ffbash
task install
task lint:all
task test:all
task build:all
Ta5d6ff```

Tc9d1d9## Metodi di installazione

Scegli il metodo in base all'ambiente e al formato del pacchetto.

| Metodo | Include frontend | Architetture | Ideale per |
| ------------------------- | -------------------- | ------------------------------------------- | -------------------------------------------------- |
| Immagine Docker | Si | Ta5d6ff`linux/amd64`, Ta5d6ff`linux/arm64` | Avvio rapido su server Linux |
| Python wheel (Ta5d6ff`.whl`) | Si | Qualsiasi architettura supportata da Python | Installazione headless/web-server senza build Node |
| Linux AppImage | Si | Ta5d6ff`x64`, Ta5d6ff`arm64` | Uso desktop portatile |
| Pacchetto Debian (Ta5d6ff`.deb`) | Si | Ta5d6ff`x64`, Ta5d6ff`arm64` | Installazione Debian/Ubuntu |
| Pacchetto RPM (Ta5d6ff`.rpm`) | Si | Dipende dal CI | Fedora/RHEL/openSUSE |
| Da sorgente | Compilato localmente | Architettura host | Sviluppo e build personalizzati |

Note:

Tff7b72- Il workflow di release compila esplicitamente Linux Ta5d6ff`x64` e Ta5d6ff`arm64` AppImage + DEB.
Tff7b72- RPM viene anche tentato e caricato quando prodotto con successo.

Tc9d1d9## Avvio rapido: Docker

Ta5d6ff```Ta5d6ffbash
docker compose up -d
Ta5d6ff```

Il file compose predefinito mappa:

Tff7b72- Ta5d6ff`127.0.0.1:8000` sull'host -> porta Ta5d6ff`8000` del container
Tff7b72- Ta5d6ff`./meshchat-config` -> Ta5d6ff`/config` per la persistenza

In caso di errori di permessi:

Ta5d6ff```Ta5d6ffbash
sudo chown -R T79c0ff1000:1000 ./meshchat-config
Ta5d6ff```

Tc9d1d9## Installazione da artefatti di release

Tc9d1d9### 1) Linux AppImage (x64/arm64)

Tff7b721. Scaricare Ta5d6ff`ReticulumMeshChatX-v<versione>-linux-<arch>.AppImage` dalle release.
Tff7b722. Rendere eseguibile e avviare:

Ta5d6ff```Ta5d6ffbash
chmod +x ./ReticulumMeshChatX-v*-linux-*.AppImage
./ReticulumMeshChatX-v*-linux-*.AppImage
Ta5d6ff```

Tc9d1d9### 2) Debian/Ubuntu `.deb` (x64/arm64)

Tff7b721. Scaricare Ta5d6ff`ReticulumMeshChatX-v<versione>-linux-<arch>.deb`.
Tff7b722. Installare:

Ta5d6ff```Ta5d6ffbash
sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb
Ta5d6ff```

Tc9d1d9### 3) Sistemi RPM

Tff7b721. Scaricare Ta5d6ff`ReticulumMeshChatX-v<versione>-linux-<arch>.rpm` se presente nella release.
Tff7b722. Installare:

Ta5d6ff```Ta5d6ffbash
sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm
Ta5d6ff```

Tc9d1d9### 4) Python wheel (`.whl`)

I wheel delle release includono gli asset web compilati.

Ta5d6ff```Ta5d6ffbash
pip install ./reticulum_meshchatx-*-py3-none-any.whl
meshchatx --headless
Ta5d6ff```

Ta5d6ff`pipx` e supportato:

Ta5d6ff```Ta5d6ffbash
pipx install ./reticulum_meshchatx-*-py3-none-any.whl
Ta5d6ff```

Tc9d1d9## Esecuzione da sorgente (modalita web server)

Per sviluppo o build locali personalizzate.

Ta5d6ff```Ta5d6ffbash
git clone https://git.quad4.io/RNS-Things/MeshChatX.git
Tffa657cd MeshChatX
corepack Tffa657enable
pnpm config Tffa657set verify-store-integrity Tffa657true
pnpm install --frozen-lockfile
pip install Ta5d6ff"poetry==2.3.4"
poetry check --lock
poetry install
pnpm run build-frontend
poetry run python -m meshchatx.meshchat --headless --host T79c0ff127.0.0.1
Ta5d6ff```

Note sui comandi di installazione:

Tff7b72- Ta5d6ff`pnpm install --frozen-lockfile` rifiuta di aggiornare Ta5d6ff`pnpm-lock.yaml` e fallisce se il lockfile non corrisponde a Ta5d6ff`package.json`. Cosi' si evita che una versione upstream inattesa venga installata silenziosamente.
Tff7b72- Ta5d6ff`verify-store-integrity=true` e' impostato anche nel Ta5d6ff`.npmrc` del progetto; la riga esplicita Ta5d6ff`pnpm config set` rafforza inoltre la configurazione utente.
Tff7b72- Gli script di lifecycle (Ta5d6ff`preinstall`/Ta5d6ff`postinstall`) sono bloccati di default in pnpm v10+. Solo i pacchetti elencati in Ta5d6ff`pnpm.onlyBuiltDependencies` di Ta5d6ff`package.json` possono eseguire script di installazione (attualmente Ta5d6ff`electron`, Ta5d6ff`electron-winstaller`, Ta5d6ff`esbuild`, Ta5d6ff`protobufjs`).
Tff7b72- Ta5d6ff`poetry check --lock` fallisce subito se Ta5d6ff`poetry.lock` non e' allineato con Ta5d6ff`pyproject.toml`; Ta5d6ff`poetry install` risolve poi solo dal lockfile.
Tff7b72- Per un'installazione Poetry strettamente basata sul lockfile (senza refresh implicito), fissa Poetry con Ta5d6ff`pip install "poetry==2.3.4"`, in linea con la CI.

Se vuoi aggiornare intenzionalmente le dipendenze, esegui Ta5d6ff`pnpm update` / Ta5d6ff`poetry update` in un commit dedicato e rivedi il diff del lockfile prima del push.

Tc9d1d9## Esecuzione in sandbox (Linux)

Per eseguire il binario nativo Ta5d6ff`meshchatx` (alias: Ta5d6ff`meshchat`) con isolamento aggiuntivo del filesystem, puoi usare **Firejail** o **Bubblewrap** (Ta5d6ff`bwrap`) mantenendo l'accesso di rete normale per Reticulum e l'interfaccia web. Esempi completi (pip/pipx, Poetry, note sulla seriale USB) sono in:

Tff7b72- [Ta5d6ff`docs/meshchatx_linux_sandbox.md`](../docs/meshchatx_linux_sandbox.md)

La stessa pagina compare nell'elenco **Documentazione** in-app (documentazione MeshChatX) quando viene servita dai file Ta5d6ff`meshchatx-docs` inclusi o sincronizzati.

Tc9d1d9## Desktop Linux: font emoji

Il selettore emoji mostra gli emoji Unicode standard usando i font di sistema (Electron/Chromium). Se compaiono quadrati vuoti ("tofu"), installate un pacchetto emoji a colori e riavviate l'app.

| Famiglia (esempi) | Pacchetto |
| -------------------------- | -------------------------------------------------------------------- |
| Arch Linux, Artix, Manjaro | Ta5d6ff`noto-fonts-emoji` (Ta5d6ff`sudo pacman -S noto-fonts-emoji`) |
| Debian, Ubuntu | Ta5d6ff`fonts-noto-color-emoji` (Ta5d6ff`sudo apt install fonts-noto-color-emoji`) |
| Fedora | Ta5d6ff`google-noto-emoji-color-fonts` |

Dopo l'installazione, eseguite Ta5d6ff`fc-cache -fv` se i glifi non compaiono fino al prossimo accesso. Opzionale: Ta5d6ff`noto-fonts` per una copertura simboli più ampia su installazioni minime.

Tc9d1d9## Compilazione pacchetti desktop da sorgente

Gli script sono definiti in Ta5d6ff`package.json` e Ta5d6ff`Taskfile.yml`.

Tc9d1d9### Linux x64 AppImage + DEB

Ta5d6ff```Ta5d6ffbash
pnpm run dist:linux-x64
Ta5d6ff```

Tc9d1d9### Linux arm64 AppImage + DEB

Ta5d6ff```Ta5d6ffbash
pnpm run dist:linux-arm64
Ta5d6ff```

Tc9d1d9### RPM

Ta5d6ff```Ta5d6ffbash
pnpm run dist:rpm
Ta5d6ff```

Oppure tramite Task:

Ta5d6ff```Ta5d6ffbash
task dist:fe:rpm
Ta5d6ff```

Tc9d1d9## Supporto architetture

Tff7b72- Immagine Docker: Ta5d6ff`amd64`, Ta5d6ff`arm64`
Tff7b72- Linux AppImage: Ta5d6ff`x64`, Ta5d6ff`arm64`
Tff7b72- Linux DEB: Ta5d6ff`x64`, Ta5d6ff`arm64`
Tff7b72- Windows: Ta5d6ff`x64`, Ta5d6ff`arm64` (script di build disponibili)
Tff7b72- macOS: script di build disponibili (Ta5d6ff`arm64`, Ta5d6ff`universal`) per ambienti di build locali
Tff7b72- Android: APK nativi — Ta5d6ff`arm64-v8a`, Ta5d6ff`x86_64`, universale

Tc9d1d9## Android

MeshChatX supporta build APK Android native (non solo Termux).

Tc9d1d9### Build APK da sorgente

Dalla root del repository:

Ta5d6ff```Ta5d6ffbash
T8b949e# 1) Build delle wheel Chaquopy usate da android/app/build.gradle
bash scripts/build-android-wheels-local.sh

T8b949e# 2) Build degli APK slim predefiniti (universal: un APK per flavor e tipo di build)
Tffa657cd android
./gradlew --no-daemon :app:assembleSlimDebug :app:assembleSlimRelease
Ta5d6ff```

Gli output dipendono dai **product flavors** Ta5d6ff`slim` / Ta5d6ff`full` (dimensione dell'albero Python) e dall **imballaggio ABI** Ta5d6ff`universal` (predefinito) o Ta5d6ff`split` (vedi Ta5d6ff`android/app/build.gradle`).

Con **`-PmeshchatxAbiPackaging=universal`** (predefinito), un solo APK contiene tutti gli ABI selezionati.

Debug (Ta5d6ff`android/app/build/outputs/apk/slim/debug/`):

Tff7b72- Ta5d6ff`app-slim-debug.apk`

Release (Ta5d6ff`android/app/build/outputs/apk/slim/release/`):

Tff7b72- Ta5d6ff`app-slim-release-unsigned.apk`

Per il bundle Python completo: Ta5d6ff`:app:assembleFullDebug` o Ta5d6ff`:app:assembleFullRelease`.

Note:

Tff7b72- Gli output release sono non firmati di default se non configurate le firme.
Tff7b72- Per una sola build, ad esempio: Ta5d6ff`:app:assembleSlimDebug` o Ta5d6ff`:app:assembleSlimRelease`.
Tff7b72- ABI: Ta5d6ff`-PmeshchatxAbis` o Ta5d6ff`MESHCHATX_ABIS`; imballaggio: Ta5d6ff`-PmeshchatxAbiPackaging` o Ta5d6ff`MESHCHATX_ABI_PACKAGING`.
Tff7b72- Albero Ta5d6ff`meshchatx/` per Chaquopy: **`slim`** in Ta5d6ff`src/slim/python/`, **`full`** in Ta5d6ff`src/full/python/`. Dettagli in [Ta5d6ff`android/README.md`](../android/README.md).

Documentazione aggiuntiva:

Tff7b72- [Ta5d6ff`docs/meshchatx_on_android_with_termux.md`](../docs/meshchatx_on_android_with_termux.md)
Tff7b72- [Ta5d6ff`android/README.md`](../android/README.md)

Tc9d1d9## Configurazione

| Argomento | Variabile d'ambiente | Predefinito | Descrizione |
| -------------------------- | ---------------------------------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Ta5d6ff`--host` | Ta5d6ff`MESHCHAT_HOST` | Ta5d6ff`127.0.0.1` | Indirizzo di bind del web server |
| Ta5d6ff`--port` | Ta5d6ff`MESHCHAT_PORT` | Ta5d6ff`8000` | Porta del web server |
| Ta5d6ff`--no-https` | Ta5d6ff`MESHCHAT_NO_HTTPS` | Ta5d6ff`false` | Disattiva HTTPS |
| Ta5d6ff`--ssl-cert` / Ta5d6ff`--ssl-key` | Ta5d6ff`MESHCHAT_SSL_CERT` / Ta5d6ff`MESHCHAT_SSL_KEY` | (nessuno) | Percorsi PEM certificato e chiave; impostare entrambi. Sostituisce i certificati auto-generati sotto l'identita nella directory Ta5d6ff`ssl/`. |
| Ta5d6ff`--rns-log-level` | Ta5d6ff`MESHCHAT_RNS_LOG_LEVEL` | (nessuno) | Livello di log Reticulum (RNS): Ta5d6ff`none`, Ta5d6ff`critical`, Ta5d6ff`error`, Ta5d6ff`warning`, Ta5d6ff`notice`, Ta5d6ff`verbose`, Ta5d6ff`debug`, Ta5d6ff`extreme` o numerico. La CLI ha priorita sulla variabile d'ambiente se entrambe sono impostate. |
| Ta5d6ff`--headless` | Ta5d6ff`MESHCHAT_HEADLESS` | Ta5d6ff`false` | Non aprire il browser automaticamente |
| Ta5d6ff`--auth` | Ta5d6ff`MESHCHAT_AUTH` | Ta5d6ff`false` | Attiva autenticazione base |
| Ta5d6ff`--storage-dir` | Ta5d6ff`MESHCHAT_STORAGE_DIR` | Ta5d6ff`./storage` | Directory dei dati |
| Ta5d6ff`--public-dir` | Ta5d6ff`MESHCHAT_PUBLIC_DIR` | auto/bundle | Directory dei file frontend (per installazioni senza asset inclusi) |

Tc9d1d9## Branch

| Branch | Scopo |
| -------- | --------------------------------------------------------------------- |
| Ta5d6ff`master` | Release stabili. Solo codice pronto per la produzione. |
| Ta5d6ff`dev` | Sviluppo attivo. Potrebbe contenere modifiche instabili o incomplete. |

Tc9d1d9## Sviluppo

Attivita comuni da Ta5d6ff`Taskfile.yml`:

Ta5d6ff```Ta5d6ffbash
task install
task lint:all
task test:all
task build:all
Ta5d6ff```

Scorciatoie Ta5d6ff`Makefile`:

| Comando | Descrizione |
| -------------- | ----------------------------------------- |
| Ta5d6ff`make install` | Installa dipendenze pnpm e poetry |
| Ta5d6ff`make run` | Esegue MeshChatX tramite poetry |
| Ta5d6ff`make build` | Compila il frontend |
| Ta5d6ff`make lint` | Esegue eslint e ruff |
| Ta5d6ff`make test` | Test frontend e backend |
| Ta5d6ff`make clean` | Rimuove artefatti di build e node_modules |

Tc9d1d9## Versioning

Versione attuale nel repository: Ta5d6ff`4.5.0`.

Tff7b72- La fonte della versione JavaScript/Electron e Ta5d6ff`package.json`.
Tff7b72- Ta5d6ff`meshchatx/src/version.py` e sincronizzato da Ta5d6ff`package.json` con:

Ta5d6ff```Ta5d6ffbash
pnpm run version:sync
Ta5d6ff```

Per release coerenti, allineare i campi di versione dove richiesto (Ta5d6ff`package.json`, Ta5d6ff`pyproject.toml`, Ta5d6ff`meshchatx/__init__.py`).

Tc9d1d9## Sicurezza

Tff7b72- [Ta5d6ff`SECURITY.md`](../SECURITY.md)
Tff7b72- Controlli di integrita integrati e HTTPS/WSS predefiniti nell'app
Tff7b72- Workflow di scansione CI in Ta5d6ff`.gitea/workflows/`

Tc9d1d9## Aggiungere una lingua

Il rilevamento della lingua locale è automatico. Aggiungi un nuovo file in Ta5d6ff`meshchatx/src/frontend/locales/` (ad esempio Ta5d6ff`xx.json`) con le stesse chiavi di Ta5d6ff`en.json` e un campo in cima Ta5d6ff`_languageName` per l'etichetta nel selettore lingue. Puoi copiare Ta5d6ff`en.json` e tradurre tutto a mano; **la generazione automatica è opzionale** e non è mai obbligatoria.

**Correzioni e traduzioni umane sono benvenute.** Miglioramenti a un file esistente o un file interamente tradotto a mano possono essere inviati con una pull request o una segnalazione sul [Tff7b72repository sorgente](Te6edf3https://git.quad4.io/RNS-Things/MeshChatX) o sul [Tff7b72mirror GitHub](Te6edf3https://github.com/Sudo-Ivan/MeshChatX).

**Opzionale: bozza con Argos Translate** -- Se vuoi una prima bozza generata da Ta5d6ff`en.json`, puoi usare Ta5d6ff`scripts/argos_translate.py`. Gestisce la formattazione e aiuta a proteggere le variabili di interpolazione (come Ta5d6ff`{count}`).

Ta5d6ff```Ta5d6ffbash
T8b949e# Installa argostranslate se non l'hai già fatto
pip install argostranslate

T8b949e# Esegui lo script di traduzione
python scripts/argos_translate.py --from en --to xx --input meshchatx/src/frontend/locales/en.json --output meshchatx/src/frontend/locales/xx.json --name Ta5d6ff"Nome della tua lingua"
Ta5d6ff```

Dopo una passata automatica, fai verificare grammatica, contesto e tono a un LLM o a un revisore umano (es. formale vs informale).

Verifica la parità delle chiavi con: Ta5d6ff`pnpm test -- tests/frontend/i18n.test.js --run`

Non sono necessarie altre modifiche al codice. L'app, il selettore della lingua e i test scoprono le lingue dalla cartella Ta5d6ff`meshchatx/src/frontend/locales/` durante la compilazione.

Tc9d1d9## Crediti

Tff7b72- [Tff7b72Liam Cottle](Te6edf3https://github.com/liamcottle) - Reticulum MeshChat originale
Tff7b72- [Tff7b72RFnexus](Te6edf3https://github.com/RFnexus) - Parser Micron (JavaScript)
Tff7b72- [Tff7b72markqvist](Te6edf3https://github.com/markqvist) - Reticulum, LXMF, LXST

Tc9d1d9## Licenza

Le parti di proprieta del progetto sono rilasciate sotto 0BSD.
Le parti originali upstream derivate da MeshChat restano sotto MIT.
Per testo completo e note, vedi [Ta5d6ff`../LICENSE`](../LICENSE).


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────